package com.android.adpater.interfaces;

import android.view.View;

import androidx.annotation.ColorInt;
import androidx.annotation.ColorRes;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;

import com.android.adpater.AdapterViewHelper;

/**
 * 扩展的Adapter接口规范
 */
public interface IAdapter<T> {

  /**
   * @param onItemViewClick
   */
  void setOnListItemClick(@NonNull OnClickListItemListener onItemViewClick);

  /**
   * @param view
   * @param obj
   * @param position
   */
  void addItemClick(@NonNull View view, Object obj, @NonNull int position);

  /**
   * 是否开启数据变化更新
   * @param enable
   */
  void enableNotifyDataSetChanged(boolean enable);

  /**
   * 数据更新回调
   *
   * @param helper {@link AdapterViewHelper}
   * @param item 当前Item对象
   * @param position 下标
   */
  void onBindView(AdapterViewHelper helper, T item, int position);


  /**
   * View 类型
   * @param item
   * @param position
   * @return
   */
  int getItemViewType(T item,int position);

  /**
   * 当前布局文件
   * @param viewType view 类型
   * @return
   */
  int getLayoutResId(int viewType);

  String getString(@StringRes int strId, Object ... obj);

  @ColorInt
  int getColor(@ColorRes int colorId);

}
